1. Field of the Invention
The invention relates generally to host bus adapters (“HBA”) and more specifically relates to executing a decompressed portion of an option memory in a shadow memory.
2. Discussion of Related Art
A host bus adapter (“HBA”) or a host adapter/controller is a device that connects to a host bus of a host computer for coupling the host computer to a peripheral device or link. Exemplary host bus standards include Peripheral Component Interconnect (“PCI”), Peripheral Component Interconnect Extended (“PCI-X”), and PCI Express. Many HBAs allow the host computer to connect to computer peripheral devices. For example, a PCI Redundant Array of Independent Disks (“RAID”) HBA allows the host computer to connect to various storage devices through a PCI bus and the HBA.
An HBA can have an option memory that comprises instructions for allowing the host computer to initialize the HBA during system initialization, provide services of the HBA, and/or for allowing a user to configure the HBA. For example, the option memory of a RAID HBA may allow the host computer to initialize the HBA and locate storage devices, provide storage services including INT 13 functions, and/or allow a user to configure the HBA and the storage devices. The option memory (and/or the instructions it comprises) is often called “option ROM” that may be physically implemented in Read Only Memory (“ROM”), Flash memory of the HBA, or other suitable memories.
System initialization is often referred to as system basic input output system (“BIOS”) power-on self-test (“POST”). During system initialization, a system BIOS program of the host computer loads the option memory, if any, from the HBA into a shadow memory area of system memory often called “shadow RAM.” The option memory (or the instructions it comprises) in the shadow memory, now a “shadow” of the original, is then executed by the host computer. The option memory is limited in size. For example, the option memory of a PCI HBA has a practical limit of 64K bytes as many system BIOS programs impose such a limit on the size of the option memory for each HBA. This is because the size of the shadow memory is limited. If the host computer is unable to allocate enough shadow memory to load the option memory during system initialization, the option memory is not loaded, meaning that the HBA would not be initialized to provide service.
As HBAs are becoming more sophisticated to provide additional and better services, the size of the option memory is also growing. However, the size of the shadow memory is not growing, limiting the size of the option memory and the services that HBAs can provide. Again, these limitations are imposed by many system BIOS programs to assure compatibility with older legacy devices and programs.
Thus it is an ongoing challenge to execute the option memory in the shadow memory as the option memory continues to grow in size.